import { PersistedStateOptions } from 'pinia-plugin-persistedstate'
import { getToken } from '@/utils/cookies'
import { UserState } from '../interface'

/**
 * @description 用户模块
 * @returns userModule
 */
export const userModule = (): UserState => {
  return {
    token: getToken() || '',
    userInfo: {
      // 用户id
      userId: null,
      // 姓名
      name: '',
      // 性别
      gender: 1,
      // 手机号
      mobile: '',
      // 角色
      roleName: '',
      // 角色列表
      roleNameList: [],
      // 生日
      birthday: '',
      // 工作单位
      workspace: '',
      // 邮箱
      email: '',
      // 职位
      jobTitle: '',
      // 学校id
      schoolId: null
    },
    userRoleName: '',
    permissions: [],
    hasUserInfo: false,
    isAdminCount: false
  }
}

/**
 * @description pinia 持久化参数配置
 * @param {String} key 存储到持久化的 name
 * @param {Array} paths 需要持久化的 state name
 * @return persist
 * */
export const piniaPersistConfig = (key: string, paths?: string[]) => {
  const persist: PersistedStateOptions = {
    key,
    storage: localStorage,
    // storage: sessionStorage,
    paths
  }
  return persist
}
